const Koa = require('koa')
const bodyParser = require('koa-bodyparser')
const staticMiddleware = require('koa-static')
const cors = require('koa2-cors')
const discussRoute = require('./routes/discuss')
const collectionRoute = require('./routes/collection')
const clientRoute = require('./routes/client')
// const WebSocket = require('ws')


const app = new Koa({
    keys:['hdauidfhauiof']
})
app.use(staticMiddleware(__dirname+'/static'))
app.use(bodyParser())
app.use(cors())
// app.use(
//     cors({
//         origin: function(ctx) { //设置允许来自指定域名请求
//             if (ctx.url === '/test') {
//                 return '*'; // 允许来自所有域名请求
//             }
//             return 'http://localhost:8080'; //只允许http://localhost:8080这个域名的请求
//         },
//         maxAge: 5, //指定本次预检请求的有效期，单位为秒。
//         credentials: true, //是否允许发送Cookie
//         allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法
//         allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段
//         exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段
//     })
// );

app.use(discussRoute.routes(),discussRoute.allowedMethods())
app.use(collectionRoute.routes(),collectionRoute.allowedMethods())
app.use(clientRoute.routes(),clientRoute.allowedMethods())
// const server = 
app.listen(8080,()=>{
    console.log('listen on 8080')
})
// websocket服务器直接使用koa的http服务器
// const websocketServer = new WebSocket.Server({server})

// 保存已连接的客户端
// const clients = new Set()
// 广播信息
// function broadcast(message){
//     for(const client of clients){
//         const {ws,address} = client
//         ws.send(message,(err)=>{
//             if(err){
//                 console.log('{broadcast}'+address+'error:'+err.message)
//                 clients.delete(client)
//                 broadcast(address+'离开了')
//             }
//         })
//     }
// }

// 监听websocket事件
// websocketServer.on('connection',(ws,request)=>{
//     const address = request.connection.remoteAddress + ':'
//     + request.connection.remotePort
//     const client = {ws,address}
//     clients.add(client)
//     broadcast(address+'连接了')
//     ws.on('message',(message)=>{
//         broadcast(address+":"+message)
//     })
// })
